Support multi-groupes : extensions du profil de sécurité

Les profils de sécurité du serveur EMu ont été étendus pour prendre en charge les groupes multiples par utilisateur. Les profils sont conservés au format XML dans un fichier nommé security dans le répertoire de la base de données. Deux nouveaux attributs ont été ajoutés à la balise <user> pour permettre la prise en charge de plusieurs groupes :

  • level

    L'attribut niveau définit une étiquette pour le profil utilisateur. En modifiant la valeur de l'étiquette niveau pour un utilisateur donné, un ensemble différent de paramètres de sécurité est activé. Le nom du groupe est utilisé comme valeur d'étiquette pour les bases de données EMu. Pour passer d'un groupe à l'autre, le client EMu modifie la valeur du niveau pour qu'elle corresponde au groupe du module concerné, c'est-à-dire le module avec lequel l'utilisateur interagit.

  • Default

    Une valeur "yes" indique que cet ensemble de paramètres de sécurité doit être utilisé si le client n'a pas défini de valeur de niveau. Lorsque le client EMu se connecte pour la première fois, aucun niveau n'a encore été défini car le Registre EMu n'a pas encore été consulté (le problème de l’œuf ou de la poule). Une fois que le Registre peut vérifier le groupe de connexion, le niveau est fixé à la valeur fournie.

Un profil de sécurité d'utilisateur est créé pour chaque groupe auquel l'utilisateur appartient (via l'entrée de Registre User|utilisateur|Group). Si l’utilisateur badenov a l'entrée de Registre suivante :

Clé Utilisateur
Clé 1 User
Clé 2 badenov
Clé 3 Group
Valeur Curatorial;Loans Officer

les segments de sécurité XML suivants sont générés :

<user name="badenov" level="Curatorial" default="yes">
 ... 
</user>
<user name="badenov" level="Loans Officer">
 ...
</user>

Les profils de sécurité sont construits par la commande emusecurity. Cette commande côté serveur consulte le Registre EMu et construit des profils de sécurité appropriés pour tous les modules, pour tous les utilisateurs, pour chaque groupe auquel appartient un utilisateur. La commande est appelée automatiquement chaque fois qu'une entrée de Registre User|user|Group est créée, modifiée ou supprimée. emusecurity définit l'attribut Default sur "yes" pour le premier groupe listé pour chaque utilisateur.

Le niveau de sécurité est défini via l'option de base de données seclevel. La valeur de l'option est le niveau de sécurité à utiliser. Si aucune option n'a été définie ou si la valeur est vide, le profil de sécurité avec l'attribut default="yes" spécifié est utilisé. Par exemple, pour charger des données dans le module Personnes / Organisations en utilisant le groupe Conservateur, les commandes suivantes peuvent être utilisées :

epartiesopts=seclevel=Conservateur
export epartiesopts
texload ....

Lorsque vous utilisez TexAPI, seclevel est défini par l'appel TexOptionSet(). Par exemple, pour changer le niveau de sécurité afin d'utiliser le groupe Conservateur pour toutes les tables EMu, l'appel suivant peut être utilisé :

TexOptionSet(session, NULL, "seclevel", "Conservateur");

Pour les scripts perl, l'appel OptionSet() est utilisé pour modifier le niveau de sécurité. Par exemple, pour changer le niveau de sécurité afin d'utiliser le groupe Conservateur pour toutes les tables EMu, l'appel suivant peut être utilisé :

$session->OptionSet("", "seclevel", "Conservateur");

L'option seclevel peut être définie pour chaque base de données ou pour l’ensemble du système.